package com.mareas.web.jsf.view;

import java.io.Serializable;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

import org.springframework.stereotype.Component;
import org.springframework.web.jsf.FacesContextUtils;

import com.mareas.web.model.Datossalida;
import com.mareas.web.model.Operacion;

@Component("datosSalidaView")
@ManagedBean
@RequestScoped
public class DatosSalidaView extends ListAbstractView<Datossalida> implements
		Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 7045957291111221825L;


	private Operacion operacionActual = null;
	
	public DatosSalidaView() {
		super();
	}

	@Override
	public void store() {
		getEdited().setOperacion(getOperacionActual());
		super.store();
	}

	@Override
	public List<Datossalida> getAll() {
		List<Datossalida> all = this.getGenericService().getAll(Datossalida.class);
		return all;
	}

	@Override
	public Datossalida getEdited() {
		if (super.getEdited() == null) {
			if (getOperacionActual() != null
					&& !getOperacionActual().getDatosarribos().isEmpty()) {

				for (Datossalida datossalida : getOperacionActual().getDatossalidas()) {
					setEdited(datossalida);
				}
			} else {
				setEdited(new Datossalida());
			}
		}
		return super.getEdited();
	}
	
	@Override
	public void setEdited(Datossalida edited) {
		super.setEdited(edited);
	}
	
	@Override
	public Datossalida getNew() {
		return new Datossalida();
	}

	public void resetEdited() {
		setEdited(getNew());
	}
	
	public Operacion getOperacionActual() {
		FacesContext facescontext = FacesContext.getCurrentInstance();
		if (this.operacionActual == null) {
			ApplicationBean applicationBean = (ApplicationBean) FacesContextUtils
					.getRequiredWebApplicationContext(facescontext).getBean(
							"applicationBean");
			this.operacionActual = applicationBean.getOperacionActual();
			
			if (this.operacionActual != null) {
				this.operacionActual = getGenericService().get(Operacion.class, operacionActual.getOperacionId());
			}
		}
		return this.operacionActual;
	}
	
	
	public void init() {
		//super.init();
		operacionActual = null;
	}
	
}
